package com.xu.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * SpringMVC 中的报文信息转换器（HttpMessageConverter）
 *
 * HttpMessageConverter，报文信息转换器，将请求报文转换为 Java 对象，或将 Java 对象转换为响应报文
 * HttpMessageConverter 提供了两个注解和两个类型：@RequestBody，@ResponseBody，RequestEntity，ResponseEntity
 *
 * 1. @RequestBody
 *
 * 注解 @RequestBody 可以获取请求体，需要在控制器方法设置一个形参，使用 @RequestBody 进行标识，当前请求的请求体就
 * 会为当前注解所标识的形参赋值
 *
 * 2. RequestEntity
 *
 * RequestEntity 封装请求报文的一种类型，需要在控制器方法的形参中设置该类型的形参，当前请求的请求报文就会赋值给该形参，
 * 可以通过 getHeaders() 获取请求头信息，通过 getBody() 获取请求体信息
 *
 * 3. @ResponseBody
 *
 * 注解 @ResponseBody 用于标识一个控制器方法，可以将该方法的返回值直接作为响应报文的响应体响应到浏览器
 *
 * 4. @RestController
 *
 * 注解 @RestController 是 SpringMVC 提供的一个复合注解，标识在控制器的类上，就相当于为类添加了 @Controller 注解，并且
 * 为其中的每个方法添加了 @ResponseBody 注解
 */

@Controller
public class HelloController {

    @RequestMapping("/")
    public String index(){
        // 返回视图名称，即加上配置视图解析器时，指定的前缀和后缀
        return "index";
    }

    @RequestMapping("/target")
    public String toTarget(){
        return "target";
    }

}
